package com.zjsru.plan2024.normal;

import java.util.Arrays;

/**
 * 3132. 找出与数组相加的整数 II
 * @Author: cookLee
 * @Date: 2024-08-11
 */
public class MinimumAddedInteger {

    /**
     * 主
     * \
     * 输入：nums1 = [4,20,16,12,8], nums2 = [14,18,10]
     * 输出：-2
     * 解释：
     * 移除 nums1 中下标为 [0,4] 的两个元素，并且每个元素与 -2 相加后，nums1 变为 [18,14,10] ，与 nums2 相等。
     * \
     * 输入：nums1 = [3,5,5,3], nums2 = [7,7]
     * 输出：2
     * 解释：
     * 移除 nums1 中下标为 [0,3] 的两个元素，并且每个元素与 2 相加后，nums1 变为 [7,7] ，与 nums2 相等。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        MinimumAddedInteger minimumAddedInteger = new MinimumAddedInteger();
        int[] nums1 = new int[]{4,20,16,12,8};
        int[] nums2 = new int[]{14,18,10};
        System.out.println(minimumAddedInteger.minimumAddedInteger(nums1, nums2));
    }

    /**
     * 最小添加整数
     *
     * @param nums1 nums1
     * @param nums2 nums2
     * @return int
     */
    public int minimumAddedInteger(int[] nums1, int[] nums2) {
        int len1 = nums1.length, len2 = nums2.length;
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        //一个数组比另一个数组多2个且递增值相同
        for (int i : new int[]{2, 1, 0}) {
            int left = i + 1, right = 1;
            while (left < len1 && right < len2) {
                if (nums1[left] - nums2[right] == nums1[i] - nums2[0]) {
                    ++right;
                }
                ++left;
            }
            if (right == len2) {
                return nums2[0] - nums1[i];
            }
        }
        return 0;
    }

}
